package com.njmaomao.gj.pyot.domain.wechat.wechatapi.orderquery;

import com.njmaomao.gj.pyot.config.Bizs;
import com.njmaomao.gj.pyot.domain.wechat.PayConfig;
import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
 * 查询订单入参
 * @author hh 2018-5-10
 */
@XStreamAlias("xml")
public class OrderQueryReq {

    // 公众账号ID 必填[是] 微信支付分配的公众账号ID（企业号corpid即为此appId）
    private String  appid;

    // 商户号 必填[是] 微信支付分配的商户号
    @XStreamAlias("mch_id")
    private String mchId ;

    // 微信订单号  必填[二选一] 商户订单号，建议优先使用
    @XStreamAlias("transaction_id")
    private String  transactionId;

    // 商户订单号  必填[二选一] 微信订单号
    @XStreamAlias("out_trade_no")
    private String  outTradeNo ;

    // 随机字符串  必填[是] 随机字符串，不长于32位。推荐随机数生成算法
    @XStreamAlias("nonce_str")
    private String nonceStr;

    // 签名  必填[是] 通过签名算法计算得出的签名值，详见签名生成算法
    private String  sign ;

    // 签名类型 必填[否] 签名类型，目前支持HMAC-SHA256和MD5，默认为MD5
    @XStreamAlias("sign_type")
    private String signType;

    public String getAppid() {
        return appid;
    }

    public String getMchId() {
        return mchId;
    }

    public String getTransactionId() {
        return transactionId;
    }

    public String getOutTradeNo() {
        return outTradeNo;
    }

    public String getNonceStr() {
        return nonceStr;
    }

    public String getSign() {
        return sign;
    }

    public String getSignType() {
        return signType;
    }

    public static OrderQueryReq build(PayConfig payConfig, String orderCode) {
        OrderQueryReq orderQueryReq = new OrderQueryReq();
        orderQueryReq.appid = payConfig.getAppid();
        orderQueryReq.mchId = payConfig.getMchId();
        orderQueryReq.outTradeNo = orderCode;
        orderQueryReq.nonceStr = Bizs.generateNonceStr();
        orderQueryReq.signType = Bizs.SIGN_TYPE;
        orderQueryReq.sign = Bizs.getMd5Sign(orderQueryReq, payConfig.getKey());
        return orderQueryReq;
    }
}
